import axios from "axios";
import { ElMessage } from "element-plus";

// 获取环境变量中的API基础路径
const apiBase = import.meta.env.VITE_API_BASE || "";

// 创建axios实例
const request = axios.create({
	baseURL: apiBase, // 使用环境变量配置的API路径
	timeout: 30000, // 请求超时时间
	headers: {
		"Content-Type": "application/json"
	}
});

// 请求拦截器
request.interceptors.request.use(
	config => {
		// 在发送请求之前做些什么
		// 可以在这里添加token等认证信息
		console.log("请求配置:", config);
		return config;
	},
	error => {
		// 对请求错误做些什么
		console.error("请求错误:", error);
		return Promise.reject(error);
	}
);

// 响应拦截器
request.interceptors.response.use(
	response => {
		// 对响应数据做点什么
		console.log("响应数据:", response);
		return response;
	},
	error => {
		// 对响应错误做点什么
		console.error("响应错误:", error);

		// 统一错误处理
		if (error.response) {
			// 服务器返回错误状态码
			const status = error.response.status;
			const message = error.response.data?.message || "请求失败";

			switch (status) {
				case 400:
					ElMessage.error("请求参数错误");
					break;
				case 401:
					ElMessage.error("未授权，请重新登录");
					// 可以跳转到登录页面
					break;
				case 403:
					ElMessage.error("拒绝访问");
					break;
				case 404:
					ElMessage.error("请求的资源不存在");
					break;
				case 500:
					ElMessage.error("服务器内部错误");
					break;
				case 502:
					ElMessage.error("网关错误");
					break;
				case 503:
					ElMessage.error("服务不可用");
					break;
				case 504:
					ElMessage.error("网关超时");
					break;
				default:
					ElMessage.error(message);
			}
		} else if (error.request) {
			// 请求发送失败
			ElMessage.error("网络错误，请检查网络连接");
		} else {
			// 其他错误
			ElMessage.error(error.message || "未知错误");
		}

		return Promise.reject(error);
	}
);

export default request;
